/*
 * @Author: 刘晓伟 1748805421@qq.com
 * @Date: 2023-12-22 16:46:21
 * @LastEditors: 郝奔 1425466221@qq.com
 * @LastEditTime: 2024-12-02 15:25:54
 * @FilePath: \dqbasic_open_platform\src\framework\utils\validate.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * 名称
 * 只支持正整数
 * @param {Number} num
 * @returns {String}
 */
export function positiveInteger(num: number): string {
  if (!num) {
    num = 8;
  }
  return "value=value.replace(/[^0-9]/g,'').slice(0," + num + ')';
}
/**
 * 名称
* 1-50位，字母、数字和下划线
* @param {string} str
* @returns {Boolean}
*/
export function checkParaname(str:string):boolean {
  const reg = /^[0-9_a-zA-Z]{1,50}$/ 
  return reg.test(str)
}

/**
 * 输入编码：数字、大小写字母、下划线
 * @param {string} str
 * @returns {Boolean}
 */
export function checkCode(str: string): boolean {
  const reg = /^[0-9a-zA-Z_]{1,}$/;
  return reg.test(str);
}

/**
 * 输入字符：汉字、数字、大小写字母、下划线
 * @param {string} str
 * @returns {Boolean}
 */
export function checkChar(str: string): boolean {
  const reg = /^[\u4E00-\u9FA5A-Za-z0-9_]+$/;
  return reg.test(str);
}

/**
 * 数字
 * 0-9的数字
 * @param {string} str
 * @returns {Boolean}
 */
export function checkNumber(str: string): boolean {
  const reg = /^[0-9]*$/;
  return reg.test(str);
}
/**
* 1-20位 大小写字母或数字
* @param {string} str
* @returns {Boolean}
*/
export function checkUserName(str: string): boolean {
  const reg = /^[A-Za-z0-9]+$/
  return reg.test(str)
}

/**
 * 邮箱正则校验
 * @param {string} str
 * @returns {Boolean}
 */
export function checkEmail(str: string): boolean {
  const reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
  return reg.test(str)
}

/**
 * 手机号码验证(11位数字)
 * @param {string} str
 * @returns {Boolean}
 */
export function checkPhone(str: string): boolean {
  const reg = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/
  return reg.test(str)
}
/**
 * 姓名
 *
 * @param {string} str
 * @returns {Boolean}
 */
export function checkAccountName(str: string): boolean {
  const reg = /^[A-Za-z0-9\u4e00-\u9fa5]{0,20}$/ // 汉字、大小写字母、数字 0-20
  return reg.test(str)
}
/**
 * 不可以输入中文字符
 * @param {string} str
 * @returns {Boolean}
 */
export function noChinese(str: string): boolean {
  const reg = /[\u4e00-\u9fa5]/
  return reg.test(str)
}
/**
 * 输入参数值:字母、数字、划线-、下划线_、@、英文句号.
 * @param {string} str
 * @returns {Boolean}
 */
export function charParameterValue(str: string): boolean {
  const reg = /^[\u4E00-\u9FA5A-Za-z0-9_@.-]+$/
  return reg.test(str)
}
/*
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path: string): boolean {
  return /^(https?:|mailto:|tel:)/.test(path)
}
/**
 * 社会信用代码
 * 统一代码为18位，统一代码由十八位的数字或大写英文字母（不适用I、O、Z、S、V）组成
 * @param {string} str
 * @returns {Boolean}
 */
export function checkSocialCode(str: string): boolean {
  const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/
  return reg.test(str)
}
export function checkRealName(str: string): boolean {
  // const reg = /^[a-zA-Z\u4e00-\u9fa5]{0,20}$/ // 支持中文、英文限制0-20位
  const reg = /^[A-Za-z0-9\u4e00-\u9fa5]{0,50}$/ // 汉字、大小写字母、数字 0-20
  return reg.test(str)
}
/**
 * 包名
 * 格式必须为英文字母开头、字母和“.”
 * @param {string} str
 * @returns {Boolean}
 */
export function packageName(str: string): boolean {
  const reg = /(^(?:[a-z_]+(?:\d*[a-zA-Z_]*)*)(?:\.[a-z_]+(?:\d*[a-zA-Z_]*)*)*$)/
  return reg.test(str)
}
/**
 * @description: 只能输入1-99的正整数
 * @return {*}
 */
export function checkVersionFirst(str: string): boolean {
  const reg = /(^[1-9]\d?$)/
  return reg.test(str)
}
/**
 * @description: 只能输入0-99的正整数
 * @return {*}
 */
export function checkVersion(str: string): boolean {
  const reg = /(^([1-9][0-9]|[0-9])$)/
  return reg.test(str)
}
/**
 * topic：数字、大小写字母、下划线、中划线
 * @param {string} str
 * @returns {Boolean}
 */
export function checkParamsName(str:string): boolean {
  const reg = /^[0-9a-zA-Z_-]{1,}$/
  return reg.test(str)
}
/**
 * topic：特殊字符：&<>
 * @param {string} str
 * @returns {Boolean}
 */
export function checkSpecialCharacter(str:string): boolean {
  const reg = /[&><]/
  return reg.test(str)
}

/**
 * topic：数字、大小写字母、下划线、中划线
 * @param {string} str
 * @returns {Boolean}
 */
export function checkTopic(str:string): boolean {
  const reg = /^[0-9a-zA-Z_-]{1,}$/
  return reg.test(str)
}
